671 words
一、常用寄存器操作 二、寄存器写操作 一、常用寄存器操作12345678/* 设置位 (置1) */*pReg |= (1 << bit_position);/* 清除位 (置0) */*pReg &= ~(1 << bit_position);/* 取反 */*pReg ^= (1 << bit_position); 二、寄存器写操作如下所示为配置Pc13引脚为输出模式的错误示例: 12345678/* 配置为通用输出 * 00:Input mode * 01:General purpose output mode * 10:Alternate function mode * 11:Analog mode(reset state)*/pReg = (uint32_t *)(0x48000800 + 0x00);*pReg |= 0x01 << 26; 默认配置为为11,上述操作只修改了第二位,第一位未修改,导致配置错误,正确配置如下: 1234/* 配置为通用输出 */pReg = (uint32_t *...
1.7k words
一、存储器映射 STM32H750存储器映射 二、Block 0 三、Block 1 四、Block 2 STM32H750 是 ST 基于 Cortex-M7 内核的高性能 MCU,其复杂的 存储器架构 和 多总线矩阵 为开发者提供了极高的灵活性,但也带来了学习难度。深入了解STM32存储器映射和物理内存布局,了解不同存储区域的用途与性能差异,对于我们实际开发,如bootloader程序编写、MPU配置、链接脚本等,有着巨大帮助。 一、存储器映射STM32是一个32为单片机,它可以很方便访问4GB以内的存储空间,存储器本身是没有地址信息的,对存储器分配地址的过程就叫存储器映射。ST将所有的存储器及外设资源都映射在一个4GB的地址空间上(8个块),从而可以通过访问对应的地址,访问具体的外设。其映射关系如下图所示: STM32H750存储器映射二、Block 0 地址范围 功能 0x0000 0000 ~ 0x0000 FFFF ITCM RAM,只能被CPU和MDMA 访问,属于高速的RAM 0x0001 0000 ~ 0x000F FFFF ...
1.9k words
对上述分散加载文件逐行解析如下: 一、定义加载区域(Load Region) 2)定义执行区域(Execution Region) (3)指定复位向量和启动代码 (4)C 库初始化段 (5)所有只读代码和常量 (6)所有可执行的只读代码 (7)定义 RAM 区域 (8)分配读写数据和零初始化数据 在 STM32嵌入式开发 中,分散加载文件(.sct或.ld文件)是ARM编译器用来定义代码和数据在存储空间的布局的链接脚本。它告诉编译器如何将代码和数据分配到不同的存储区域(如Flash、RAM、TCM等)。合理使用分散加载文件可以优化性能、提高实时性,甚至增强系统稳定性。 STM32的sct分散加载描述文件如下: 123456789101112131415; *************************************************************; *** Scatter-Loading Description File generated by uVision ***; *******************************...
2.2k words
在工程下创建.vscode文件夹 在工程下创建.vscode文件夹 c_cpp_properties.json文件 1234567891011121314151617181920212223242526272829303132333435363738394041424344{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "./Core/Inc", "./Drivers/STM32h7xx_HAL_Driver/Inc", "./Drivers/STM32h7xx_HAL_Driver...
1.7k words
一、易失性存储器(RAM) 1、动态随机存储器DRAM(Dynamic RAM) 2、静态随机存储器SRAM 二、非易失性存储器(ROM) 三、非易失性存储器(FLASH) 四、应用 五、其他 为什么叫 NOR / NAND? 什么是DDR模式和SDR模式? 存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件,有了存储器计算机才具有记忆功能。 存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。 一、易失性存储器(RAM)RAM(Random Access Memory),被称为随机存储器,现在专门用于指代作为计算机内存的易失性半导体存储器。 1、动态随机存储器DRAM(Dynamic RAM)动态随机存储器DRAM的存储单元以电容的电荷来表示数据,有电荷代表1,无电荷代表0,但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,因此它需要定期刷新操作,这就是“动态(Dynamic)”一词所形容的特性。 根据DRAM的通讯方式,又分为同...
136 words
一、更新下载镜像源 一、更新下载镜像源修改目标文件: 1/etc/apt/sources.list 地址替换为下述地址: 阿里源 1mirrors.aliyun.com 清华源 1mirrors.tuna.tsinghua.edu.cn 更新本地安装包数据库: 1sudo apt update
1.6k words
一、为基本数据类型定义新的类型名 二、为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称 三、定义数组类型 四、定义指针类型 1、定义数组指针类型 2、定义函数指针类型 在实际使用中,typedef 的应用主要有如下4种。 一、为基本数据类型定义新的类型名用uint32_t替代unsigned int声明变量 1typedef unsigned int uint32_t; 定义一个unsigned int类型的变量 1uint32_t count = 0; 二、为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称使用结构体定义以及声明结构体变量: 123456789struct TagPoint{ double x; double y; double z;};/* 定义一个三维坐标结构体 *//* 声明一个三维坐标点 */struct TagPoint point = {0, 0, 0}; 使用宏代替结构体定义以及声明结构体变量: 123456789typedef struct&...
3.2k words
STM32的MPU保护单元配置 一、MPU控制模式 二、三种内存类型 三、Cache介绍 1、Cache写操作 2、Cache读操作 2、数据一致性解决 二、区域设置 三、建议配(MPU_TEX_LEVEL0)(注意考虑数据一致性问题) MPU,即内存保护单元,可以设置不同存储区域的存储器访问特性(用户级、特权访问、全访问)和存储器属性(如可缓存、可缓冲、可共享),对存储器(主要是内存和外设)提供保护,从而提高系统可靠性。 存储器访问特性 权限类型 特权模式(内核) 用户任务 典型用途 特权只读(PRIV_RO) 可读 不可访问 (触发故障) 保护只读内核代码/常量 特权读写(PRIV_RW) 可读写 不可访问 (触发故障) 内核数据结构、关键寄存器 全访问(FULL_ACCESS) 可读写 可读写 用户堆栈、共享内存 存储器属性 存储器属性 硬件行为 数据一致性 典型用途 可缓存 读写经过Cache 需软件维护(Clean/Invalidate) 单核私有高性能数据 可缓冲 写入通过Write ...
1.8k words
一、Git配置: 二、Git基础使用 二、辅助命令 三、分支操作 一、Git配置: 打开Git Bash依次输入以下命令配置个人信息: 123git config --global user.name "名称"git config --global user.email 邮箱地址git config --global user.password 密码 输入以下命令可以查看个人配置信息 1git config --global --list 在User下找到.ssh文件夹生成id_rsa.pub文件作为SSH密钥 1ssh-keygen -t rsa 配置配置.gitignore文件以此来忽略不需要提交的git文件 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667###################################...
1.3k words
一、安装PM2 二、PM2的使用 一、安装PM2 nvm是官方安装nodejs的工具,安装方式如下: 12345# 安装 nvm (Node 版本管理器)curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash# 如果上面进度慢,可以尝试国内镜像版本curl -o- https://gitee.com/mirrors/nvm/raw/v0.40.0/install.sh | bash 更改Node.js 下载镜像源(如淘宝镜像): 123456# 临时生效export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node# 永久生效(写入Shell配置文件)echo 'export NVM_NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node"' >> ~/.bashrcsource ~/.bas...